home *** CD-ROM | disk | FTP | other *** search
/ Shareware Super Platinum 8 / Shareware Super Platinum 8.iso / mac / PROGTOOL / SPAWN33.ZIP;1 / LIESMICH.DOC < prev    next >
Encoding:
Text File  |  1994-06-13  |  20.9 KB  |  484 lines

  1.  
  2.               Eine EXEC Funktion mit Speicherauslagerung
  3.                   Version 3.3, Freigegeben 91-11-26
  4.       
  5.                       Public Domain Software von
  6.                             Thomas Wagner
  7.                        Ferrari electronic GmbH
  8.  
  9.  
  10. Dieses Archiv enthÑlt die Quellen fÅr eine 'EXEC'-Funktion die den
  11. Aufruf externer Programme erlaubt, wobei der Programmspeicher
  12. optional auf EMS, XMS, oder Datei ausgelagert wird. Bei Auslagerung
  13. des Speichers werden nur noch wenige K des Hauptspeichers belegt
  14. wÑhrend das externe Programm ausgefÅhrt wird. Der Code/Daten-Bereich
  15. betrÑgt etwa 1k, der benîtigte Speicherplatz ist abhÑngig von der
  16. Speicherfragmentierung, sowie besonders von der Grî·e des
  17. Umgebungsvariablenblocks. öblicherweise werden zwischen 2K und 7K
  18. belegt.
  19.  
  20. Die Routinen sind kompatibel mit 
  21.    Turbo C (Versionen 1.x, 2.x, sowie C++ 1.0)
  22.    Borland C++ (Version 2.0),
  23.    Microsoft C (Versionen 5.1 und 6.0), 
  24.    Watcom C (Version 8.0), 
  25.    Turbo Pascal (Versionen 4.x bis 6.x). 
  26.  
  27. EMS (LIM 3.0 und spÑtere Versionen) oder XMS werden benutzt sofern
  28. ausreichend Platz zur VerfÅgung steht. Wenn nicht, wird eine
  29. temporÑre Plattendatei angelegt. Diese Datei wird in dem durch die
  30. Umgebungsvariablen TEMP= oder TMP= gegebenen Pfad angelegt. Ist kein
  31. solcher Pfad angegeben, wird der aktuelle Pfad benutzt.
  32.  
  33. Aufruf und Parameterversorgung sind in der Datei "exec.h" (C) bzw.
  34. "exec.pas" (Pascal) detailliert dokumentiert.
  35.  
  36. Das allgemeine Format ist
  37.  
  38.    retcode = do_exec (Name des auszufÅhrenden Programms,
  39.                       Programm-Parameter und Redirection String,
  40.                       Spawn-Optionen,
  41.                       Benîtigter Speicher (0xffff lagert stets aus, 0 nie),
  42.                       Umgebungsvariablen-Zeiger/Flag)
  43.  
  44. zum Beispiel:
  45.  
  46.    rc = do_exec ("cl", "-c -Od exec.c >&errout", USE_ALL, 0xffff, NULL);
  47.  
  48. oder, fÅr Pascal:
  49.  
  50.    rc := do_exec ('tpc', '/$D+ exec >&errout', USE_ALL, $ffff, false);
  51.  
  52. Redirection fÅr Standard Input, Standard Output, und Standard Error
  53. wird optional behandelt indem der Parameter-String nach den folgenden
  54. Kombinationen durchsucht wird:
  55.  
  56.    stdin:   <file
  57.    stdout:  >file    oder >>file   zum AnfÅgen
  58.    stderr:  >&file   oder >&>file  zum AnfÅgen
  59.  
  60. Redirection wird standardmÑ·ig unterstÅtzt. Um sie auszuschalten,
  61. mÅssen Sie die Definitionen sowohl in spawn.asm als auch in
  62. exec.c/exec.pas Ñndern.
  63.  
  64. Wenn das auszufÅhrende Kommando eine Batch-Datei ist, wird
  65. automatisch der Kommando-Prozessor aufgerufen. Der Kommandoprozessor
  66. wird auch aufgerufen wenn das Kommando leer ist. Dabei wird die
  67. COMSPEC-Umgebungsvariable benutzt um den Kommandoprozessor zu finden,
  68. zusÑtzliche Parameter in der COMSPEC-Zeile werden in die
  69. Kommandoparameter eingefÅgt.
  70.  
  71. Zum Beispiel:
  72.  
  73.    Es sei  COMSPEC=C:\DOS\COMMAND.COM /E:960
  74.            PATH=C:\DOS;C:\CMD
  75.            Datei B.BAT existiert in C:\CMD
  76.            do_exec wird aufgerufen mit ('b', 'eins zwei >out', ...)
  77.  
  78.    Dann ist das aufgerufene Kommando
  79.            C:\DOS\COMMAND.COM
  80.    mit dem Parameter-String
  81.            /E:720 /C C:\CMD\B.BAT eins zwei
  82.    und Standard Output wird umgeleitet auf die Datei 'out'.
  83.  
  84.  
  85.  
  86.                         INHALT
  87.                         ======
  88.  
  89. Dieses Archiv enthÑlt die folgenden Dateien:
  90.  
  91.     LIESMICH.DOC    Diese Datei
  92.     README.DOC      Englische Version dieser Datei
  93.  
  94.     GETLANG.EXE     Ein Hilfsprogramm zur Extraktion einer ein-
  95.                     sprachigen Version aus der zweisprachigen
  96.                     Quelle.
  97.                     Alle C- und Assembler-Quellen (die Pascal-Quellen
  98.                     leider nur teilweise) sind sowohl in Deutsch als
  99.                     auch in Englisch dokumentiert, was die Quellen
  100.                     schwer lesbar macht. FÅr bessere Lesbarkeit
  101.                     kînnen Sie mit GETLANG eine der Sprachen
  102.                     eliminieren.
  103.  
  104.          Benutzung:  GETLANG Sprache Compiler <Eingabe >Ausgabe
  105.             wobei    Sprache   'E' fÅr Englisch oder 'D' fÅr Deutsch
  106.                      Compiler  'C' fÅr C Dateien, 'A' fÅr Assembler,
  107.                                'P' fÅr Pascal.
  108.  
  109.          Beispiele:  GETLANG d a <spawn.asm >spawnd.asm
  110.                      GETLANG d c <extest.c >extestd.c
  111.  
  112.     DEUTSCH.BAT     Batch-File zur AusfÅhrung von GETLANG fÅr alle
  113.                     Quelldateien, deutsche Version
  114.     ENGLISH.BAT     Batch-File zur AusfÅhrung von GETLANG fÅr alle
  115.                     Quelldateien, englische Version
  116.  
  117.     SPAWN.ASM       Die Hauptfunktion fÅr exec.
  118.  
  119.         Diese Datei ist fÅr die C und Pascal Versionen gleich.
  120.         FÅr Benutzung mit Turbo Pascal mu· mit dem Turbo-Assembler 
  121.         assembliert werden. Die C Version kann mit TASM (geben Sie
  122.         /JMASM51 an) oder MASM 5.1 Åbersetzt werden.
  123.  
  124.         Assemblieren mit:
  125.             tasm /DPASCAL spawn,spawnp;     FÅr Turbo Pascal, near calls
  126.             tasm /DPASCAL /DFARCALL spawn,spawnp;  
  127.                                             FÅr Turbo Pascal, far calls
  128.             ?asm spawn;                     FÅr C (Default small model)
  129.             ?asm /DMODL=xxx spawn;          For C (model 'xxx')
  130.          Beispiel:
  131.             masm /DMODL=large spawn;            Large model C
  132.             tasm /DMODL=medium /JMASM51 spawn;  Medium model C
  133.  
  134.     SPAWNP.OBJ      SPAWN assembliert fÅr Pascal, near calls
  135.     SPAWNCS.OBJ     SPAWN assembliert fÅr C (small model)
  136.     SPAWNCL.OBJ     SPAWN assembliert fÅr C (large model)
  137.         
  138.         Die C Dateien wurden mit dem /MX-Schalter Åbersetzt um
  139.         Gro·-/Kleinschreibung beim Linken zu berÅcksichtigen.
  140.  
  141.         Hinweis fÅr Turbo Pascal: Sie kînnen die "near call" Version
  142.         von SPAWN auch dann nutzen wenn Sie mit "force far calls"
  143.         kompilieren, indem Sie die "external"-Definitionen von
  144.         do_spawn und prep_swap in Datei exec.pas in {$F-} und {$F+} 
  145.         einschlie·en.
  146.         Um Konfusion bei der Verwendung mehrerer Compiler zu
  147.         vermeiden, wurde das Pascal-Object "spawnp.obj" benannt.
  148.  
  149.     CHECKPAT.ASM   Hilfsfunktion zur PrÅfung und Auflîsung eines Pfades
  150.  
  151.         Diese Datei ist fÅr die C und Pascal Versionen gleich.
  152.         FÅr Benutzung mit Turbo Pascal mu· mit dem Turbo-Assembler 
  153.         assembliert werden. Die C Version kann mit TASM (geben Sie
  154.         /JMASM51 an) oder MASM 5.1 Åbersetzt werden.
  155.  
  156.         Assemblieren mit:
  157.             tasm /DPASCAL checkpat,checkpap;  FÅr Turbo Pascal, near calls
  158.             tasm /DPASCAL /DFARCALL checkpat,checkpap;  
  159.                                               FÅr Turbo Pascal, far calls
  160.             ?asm checkpat;                    FÅr C (Default small model)
  161.             ?asm /DMODL=xxx checkpat;         FÅr C (model 'xxx')
  162.          Beispiel:
  163.             masm /DMODL=large checkpat;            Large model C
  164.             tasm /DMODL=medium /JMASM51 checkpat;  Medium model C
  165.  
  166.     CHECKPAP.OBJ    CHECKPAT assembliert fÅr Pascal, far calls
  167.     CHECKPCS.OBJ    CHECKPAT assembliert fÅr C (small model)
  168.     CHECKPCL.OBJ    CHECKPAT assembliert fÅr C (large model)
  169.     CHECKPAT.PAS    Einbindungs-Unit fÅr checkpat (Nur Pascal)   
  170.  
  171.         Die C Dateien wurden mit dem /MX-Schalter Åbersetzt um
  172.         Gro·-/Kleinschreibung beim Linken zu berÅcksichtigen.
  173.         Die Pascal-Version mu· mit dem FARCALL-Schalter assembliert
  174.         werden wenn Sie sie mit der Einbindungs-Unit CHECKPAT.PAS
  175.         zusammen benutzen. Zumindest Turbo Pascal Version 5.5
  176.         verwendet offenbar stets einen Far Call wenn eine externe
  177.         Routine im Interface-Teil einer Unit definiert wird.
  178.  
  179.     EXEC.PAS        Interface Routinen und Dokumentation fÅr Turbo Pascal
  180.     EXEC.C          Interface Routinen fÅr C
  181.     EXEC.H          Interface Definitionen und Dokumentation fÅr C
  182.     COMPAT.H        MS-C/TC KompatibilitÑts-Definitionen fÅr C
  183.  
  184.         Diese Dateien bereiten die Parameter fÅr die Hauptfunktion
  185.         vor und bearbeiten die Datei-Suche und Umgebungsvariablen.
  186.  
  187.     EXTEST.C        C Test-Programm fÅr EXEC
  188.     EXTEST.PAS      Turbo Pascal Test-Programm fÅr EXEC
  189.  
  190.         Das EXTEST Programm testet die FunktionalitÑt der do_exec
  191.         Funktion. Es erwartet die Eingabe eines DOS-Kommandos und,
  192.         durch Komma getrennt, seiner Parameter. Die Eingabe einer
  193.         Leerzeile startet COMMAND.COM ohne Parameter.
  194.  
  195.    MAKEPAS          Make-Datei fÅr Turbo Pascal (Borland Make) 
  196.    MAKETC           Make-Datei fÅr Borland C++ (Borland Make) 
  197.    MAKEMS           Make-Datei fÅr Microsoft C (MS NMAKE) 
  198.  
  199.  
  200. Die Turbo Pascal Version von EXEC.PAS enthÑlt Ersatzfunktionen fÅr
  201. die Umgebungsvariablen-Zugriffsfunktionen 'envcount', 'envstr', und
  202. 'getenv', sowie eine zusÑtzliche Funktion 'putenv'. Diese Funktion
  203. erlaubt Ihnen, zur Umgebung des gerufenen Programms Strings
  204. hinzuzufÅgen. Die Definition ist
  205.  
  206.         procedure putenv (envvar: string);
  207.  
  208. wobei 'envstr' einen String der Form 'ENVVAR=wert' enthÑlt. Das '='
  209. ist notwendig. Um einen Umgebungsvariablenstring zu lîschen geben Sie
  210. 'ENVVAR=' an. Bitte nutzen Sie nur die Funktionen aus der EXEC Unit,
  211. mischen Sie sie nicht mit Aufrufen der Funktionen der DOS Unit.
  212.  
  213.  
  214.                         SUPPORT
  215.                         =======
  216.  
  217. Diese Software ist "Public Domain", das hei·t es gibt keinerlei
  218. EinschrÑnkungen bezÅglich ihrer Nutzung, ob privat oder in
  219. kommerziellen Produkten. Es ist weder eine RegistrierungsgebÅhr zu
  220. zahlen, noch sind zur Nutzung irgendwelche Lizenzen erforderlich.
  221.  
  222. Dies hei·t allerdings auch, da· der Autor zu keiner Leistung
  223. gegenÅber dem Nutzer verpflichtet ist. Jegliche AnsprÅche auf
  224. Schadenersatz bei Fehlfunktionen sind ausgeschlossen. Sie haben die
  225. Quellen, bitte prÅfen Sie sie vor Nutzung.
  226.  
  227. Ich mîchte auch um VerstÑndnis bitten, da· ich nicht in der Lage bin,
  228. kostenlose Programmierberatung zu erteilen, Spezialversionen fÅr
  229. exotische Compiler zu erstellen, oder neue Versionen dieses Programms
  230. kostenlos zu versenden. 
  231.  
  232. Fehlermeldungen, VerbesserungsvorschlÑge und Ñhnliches senden Sie
  233. bitte an meine Firmen-Adresse:
  234.  
  235.         Ferrari electronic GmbH
  236.         Thomas Wagner
  237.         Beusselstrasse 27
  238.         D-1000 Berlin 21
  239.  
  240.         Telephon: (030) 396 50 21 (nur im Ñu·ersten Notfall)
  241.         Fax:      (030) 396 80 20
  242.  
  243.         BIX:         twagner
  244.         Compuserve:  100023,2042
  245.         UUCP:        oeschi@netmbx.UUCP (attn: Thomas Wagner)
  246.  
  247. Ein eingeschrÑnkter Support ist Åber BIX, das Teleconferencing System
  248. von McGraw-Hill, mîglich. Falls Sie Fragen oder Fehlermeldungen
  249. haben, senden sie BIXmail an 'twagner'. Details Åber BIX finden Sie
  250. in der Englischsprachigen Version dieser Dokumentation.
  251.  
  252.  
  253.  
  254.                         EINSCHRéNKUNGEN
  255.                         ===============
  256.  
  257. Der "keine RÅckkehr"-Modus von do_exec ist nur der VollstÑndigkeit
  258. halber verfÅgbar. Er hat einige Nachteile gegenÅber den
  259. Standard-Funktionen der Compiler-Bibliotheken. Insbesondere werden
  260. offene Dateien nicht abgeschlossen, und durch die Laufzeitbibliothek
  261. belegte Interrupt-Vektoren werden nicht auf den DOS-Standardwert
  262. zurÅckgesetzt. Wenn mîglich, benutzen Sie fÅr diesen Modus die
  263. Standardfunktionen.
  264.  
  265. Das Assembler-Modul "spawn" darf nicht das erste Modul beim Linken
  266. sein. FÅgen Sie es in eine Bibliothek ein, oder geben Sie spawn.obj
  267. als eine der letzten zu linkenden Dateien an. Das spawn-Modul
  268. Åberschreibt etwa 1k am Anfang des Programmspeichers. Dieser Speicher
  269. wird zwar gesichert, er darf aber nicht Teile des Moduls selbst
  270. enthalten, da der Programmcode dabei zerstîrt wÅrde. Die
  271. do_exec-Funktion ÅberprÅft diese Bedingung, und kehrt mit einem
  272. entsprechenden Fehlercode zurÅck falls der Code in Gefahr wÑre.
  273.  
  274. Bei Aufruf von do_exec dÅrfen keine Interrupt-Handler installiert
  275. sein. Dies schlie·t Handler fÅr Control-C und Critical Errors ein.
  276. Sofern Sie Interrupts bearbeiten wollen wÑhrend Ihr Programm
  277. ausgelagert ist, mÅssen Sie das spawn-Modul modifizieren, soda· die
  278. Handler in den residenten Teil Åbernommen werden.
  279.  
  280. Offene Dateien bleiben wÑhrend der do_exec-Funktion geîffnet. Dies
  281. reduziert die Zahl der mîglichen offenen Dateien fÅr das
  282. Kind-Programm. Die Umgebungsvariable "C_FILE_INFO", die von einigen
  283. C-Compilern bei Aufruf der Standard-Funktionen fÅr spawn erzeugt
  284. wird, wird nicht unterstÅtzt. Wenn NO_INHERIT in spawn.asm gesetzt
  285. ist (Standard), werden alle offenen Dateien au·er den ersten fÅnf
  286. Standard-Dateien vor dem Kindprozess "versteckt" und damit nicht
  287. vererbt. Dies erlaubt dem Kindprozess, mehr Dateien zu îffnen, wobei
  288. allerdings das Systemweite Limit (FILES= in config.sys) hoch genug
  289. sein mu· um alle offenen Dateien zu unterstÅtzen.
  290.  
  291. Interne Kommandos (CD, DIR usw.) werden nicht automatisch bearbeitet.
  292. Sie kînnen diese ausfÅhren indem Sie den Kommandointerpreter laden
  293. (durch öbergabe eines leeren Strings fÅr das auszufÅhrende Programm).
  294. Zum Beispiel:
  295.  
  296. (C)     retcode = do_exec ("dir", "*.*", USE_ALL, 0xffff, environ);
  297.         if (retcode == RC_NOFILE)
  298.            retcode = do_exec ("", "/c dir *.*", USE_ALL, 0xffff, environ);
  299.  
  300. (P)     retcode := do_exec ('dir', '*.*', USE_ALL, $ffff, true);
  301.         if (retcode = RC_NOFILE)
  302.            retcode := do_exec ('', '/c dir *.*', USE_ALL, $ffff, true);
  303.  
  304.  
  305.  
  306.                         HINWEISE
  307.                         ========
  308.  
  309. Die Funktion sollte mit DOS bis herunter zu Version 2.11 kompatibel
  310. sein. Getestet wurde jedoch nur unter DOS 3.3, DOS 4.0, DOS 5.0, und
  311. DR-DOS 5.0.
  312.  
  313. KompatibilitÑt zu Compiler-Versionen wurde nur getestet mit Borland
  314. C++ 2.0, Microsoft C 6.0a, und Turbo Pascal 5.5. Auf andere Compiler
  315. habe ich leider keinen Zugriff. Turbo Pascal 6.0 scheint nach
  316. Benutzerberichten keine Probleme mit EXEC zu haben.
  317.  
  318. Wird ein Kommando aufgerufen das resident bleibt (TSR), zum Beispiel
  319. PRINT oder Sidekick, ist eine RÅckkehr in das rufende Programm nicht
  320. mîglich. Das Programm wird beendet, belegter Speicher in EMS/XMS wird
  321. freigegeben, eine Auslagerungsdatei wird gelîscht.
  322.  
  323. Wenn der Programmspeicher aus mehreren DOS-Speicherblîcken besteht,
  324. benutzt die Auslagerungsfunktion undokumentierte DOS-Interna.
  325. Insbesondere werden Speicherkontrollblîcke direkt modifiziert. Dies
  326. kann theoretisch zu InkompatibilitÑten mit spÑteren DOS-Versionen,
  327. oder mit DOS-Clones oder Emulatoren fÅhren. Im praktischen Betrieb
  328. wurden bisher noch keine Probleme mit irgendwelchen DOS-Versionen,
  329. einschlie·lich DOS 5.0 und der DR-DOS Versionen, festgestellt.
  330.  
  331. Wenn NO_INHERIT in spawn.asm auf TRUE gesetzt ist, werden einige
  332. undokumentierte Felder im PSP benutzt und modifiziert. Auch dies
  333. sollte mit allen DOS-Versionen und Clones funktionieren. Sollten Sie
  334. jedoch Probleme befÅrchten, kînnen Sie NO_INHERIT auf FALSE setzen
  335. (nicht jedoch, wenn Sie die Handle-Tabelle erweitern).
  336.  
  337.  
  338.                         énderungsgeschichte
  339.                         ===================
  340.  
  341. énderungen von Version 3.2a auf 3.3:
  342.  
  343. Neu ist die BerÅcksichtigung des unbenutzten Heap-Bereichs fÅr Turbo
  344. Pascal. Dieser Bereich wird optional nicht ausgelagert, was in vielen
  345. FÑllen sowohl die Auslagerungsgeschwindigkeit erhîht, als auch den
  346. Speicherbedarf auf dem Auslagerungsmedium reduziert. Da dies
  347. VersionsabhÑngig ist (Turbo Pascal Version 6 hat eine andere
  348. Heap-Verwaltung als frÅhere Versionen), ist dieses Feature in der
  349. vorÅbersetzten Version nicht eingeschaltet. Bitte setzen Sie PAS_FREE
  350. in SPAWN.ASM auf TRUE, und setzen sie TPAS_6 je nach Ihrer
  351. Turbo-Pascal-Version auf TRUE oder FALSE, um es zu nutzen.
  352.  
  353. Die Pascal "putenv" Funktion war fehlerhaft. Wenn eine Variable
  354. gesetzt wurde, die bereits im Environment vorhanden war, wurde ein
  355. doppelter Eintrag erzeugt statt den alten Eintrag zu lîschen.
  356. Fehlermeldung und Korrektur von A. Bailey.
  357.  
  358. Bei der Bestimmung von Programmname und Pfad wurden Programme, deren
  359. Basis-Name (ohne Extension) gleich dem Namen einer Subdirectory war,
  360. unter UmstÑnden nicht gefunden. Die checkpath Funktion wurde
  361. modifiziert um diesen Fall korrekt zu behandeln. Fehlermeldung von H.
  362. Lembke.
  363.  
  364. Bei Auslagerung auf Datei mit NO_INHERIT true und einer erweiterten
  365. Handle-Tabelle war eine RÅckkehr nicht mîglich. Dies lag daran, da·
  366. der Tabellen-Zeiger im PSP wiederhergestellt wurde bevor der
  367. dazugehîrige MCB-Block alloziert und wiederhergestellt war. Der
  368. PSP-Eintrag wird jetzt erst nach dem ZurÅckladen gesetzt.
  369. Fehlermeldung von H. Lembke.
  370.  
  371. EXEC konnte nicht auslagern wenn eine erweiterte Handle-Tabelle mit
  372. NO_INHERIT false verwendet wurde. Der MCB der die Handle-Tabelle
  373. enthÑlt wird jetzt nicht mehr ausgelagert. Dies fÅhrt allerdings
  374. dazu, da· der Speicher fragmentiert wird, soda· NO_INHERIT stets TRUE
  375. sein sollte wenn die Handle-Tabelle erweitert werden soll.
  376.  
  377. Die C do_exec-Funktion verarbeitet jetzt auch NULL-Zeiger auf
  378. Kommandozeile und Parameterstring korrekt.
  379.  
  380.  
  381. énderungen von Version 3.2 auf 3.2a:
  382.  
  383. Ein Fehler in checkpat.asm, der zu nicht vollstÑndigen Pfadangaben 
  384. fÅhrte, wurde behoben.
  385.  
  386. Ein Fehler in spawn.asm, der dazu fÅhrte, da· die Dateiumleitungs-
  387. Dateien selbst nach Programmende nicht geschlossen wurden, wurde
  388. behoben.
  389.  
  390. énderungen von Version 3.1 auf 3.2:
  391.  
  392. Neu ist der Aufruf einer benutzerdefinierbaren Funktion (Åber einen
  393. Funktions-Pointer bzw. eine Prozedurvariable) aus do_exec vor
  394. AusfÅhrung des Programmaufrufs. Diese Funktion kann z.B. Meldungen
  395. ausgeben und zusÑtzliche PrÅfungen durchfÅhren. Die bisher interne
  396. Struktur mit den Auslagerungs-Parametern wurde zugÑnglich gemacht
  397. um der Benutzerfunktion den Zugriff zu erlauben. FÅr Details siehe
  398. exec.h bzw. exec.pas, sowie das Beispiel in extest.c/extest.pas.
  399.  
  400. Ein Fehler in checkpat.asm, der bei Verwendung mit Turbo Pascal
  401. zu Problemen mit der "exists"-Funktion fÅhrte, wurde behoben.
  402.  
  403. Die Pascal-Version von extest wurde (endlich) auf den gleichen
  404. Stand wie die C-Version gebracht, ein Beispiel fÅr die Nutzung
  405. der Benutzerfunktion wurde in beide Versionen eingefÅgt.
  406.  
  407. In exec.c wurde die Definition der internen Routinen auf "static"
  408. geÑndert, die Initialisierung einiger Variablen in do_exec wurde
  409. korrigiert.
  410.  
  411.  
  412. énderungen von Version 3.0a auf 3.1:
  413.  
  414. Neu sind vor allem die automatische Behandlung von .BAT-Dateien und
  415. die UnterstÅtzung der I/O-Dateiumleitung. Die Suchreihenfolge fÅr
  416. Kommandos entspricht jetzt exakt der DOS-Reihenfolge, bis auf die
  417. Bearbeitung interner Kommandos (es gibt keinen sicheren Weg fÅr die
  418. Erkennung, ob ein Kommando intern oder extern ist). Dateiumleitung
  419. ist optional. Das Interface zu do_exec hat sich nicht geÑndert,
  420. do_spawn benîtigt drei neue Parameter wenn Redirection eingeschaltet
  421. ist.
  422.  
  423. Eine Routine (checkpat.asm) die einen Pfad prÅft und auflîst sowie in
  424. seine Bestandteile aufteilt wurde hinzugefÅgt. Diese Routine fÅhrt
  425. einige PrÅfungen des Pfades und des Dateinamens durch und behandelt
  426. Critical Errors (ungÅltiges Laufwerk, Laufwerk nicht bereit) ohne
  427. Benutzereingriff. Die Routine wird zur Bearbeitung des
  428. Programm-Dateinamens, des Kommandoprozessor-Dateinamens und des
  429. temporÑren Dateipfades verwendet. Die Routine ist unabhÑngig von den
  430. anderen EXEC/SPAWN-Funktionen, sie kann daher auch in anderen
  431. Applikationen nÅtzlich sein.
  432.  
  433. Einige neue Fehlercodes erlauben eine bessere Analyse von
  434. Fehlerursachen.
  435.  
  436. Der Pfad der temporÑren Datei ist jetzt stets ein vollstÑndiger Pfad.
  437. Ein Wechsel von Laufwerk oder Pfad wÑhrend der Auslagerung kann daher
  438. jetzt nicht mehr zum Verlust der Auslagerungsdatei fÅhren.
  439.  
  440. Die PrÅfung auf Existenz einer Datei wurde in checkpat.asm verlagert,
  441. und von der 'find first'-Funktion auf 'get file attributes'
  442. umgestellt. Dies scheint geringfÅgig schneller und vermeidet
  443. Compiler-AbhÑngigkeiten.
  444.  
  445. Das Programm GETLANG wurde korrigiert, die Hilfs-Meldungen werden
  446. jetzt auf stderr ausgegeben.
  447.  
  448.  
  449. énderungen von Version 3.0 auf 3.0a:
  450.  
  451. Ein kleiner Fehler in EXEC.C wurde korrigiert: ein '<' fehlte in
  452. einem deutschen Kommentar, soda· bei GETLANG E ein gro·er Teil der
  453. Datei verschluckt wurde.
  454.  
  455. Ein Problem (Fehler? Feature?) bei der Turbo C/Borland C "stat"
  456. Funktion, die fÅr Directories stets "read-only" liefern, verhinderte
  457. die Benutzung der TEMP Directory beim Auslagern. Die Schreib-
  458. Erlaubnis wird jetzt nicht mehr geprÅft.
  459.  
  460. Die PrÑallozierung der Auslagerungsdatei, die mit Version 3.0
  461. eingefÅhrt wurde um sicherzustellen da· das Laufwerk den kompletten
  462. Speicher fassen kann, fÅhrte zu starken Verzîgerungen wenn die
  463. Auslagerungsdatei auf einem Novell-Netzwerk Laufwerk lag. Um dieses
  464. Problem zu umgehen wurden zwei neue Flags fÅr den "method" Parameter
  465. eingefÅhrt:
  466.  
  467.       NO_PREALLOC - Nie PrÑallozieren
  468.       CHECK_NET   - Nicht PrÑallozieren wenn Datei auf Netzwerk
  469.  
  470. Wenn die Datei nicht prÑalloziert wird, wird das Laufwerk nicht auf
  471. ausreichenden Platz geprÅft. Die Alternative, der "get disk free
  472. space" Aufruf, dauert im allgemeinen noch wesentlich lÑnger als ein
  473. PrÑallozieren. Dies ist allerdings kein gro·es Problem, die
  474. Auslagerung liefert lediglich den Fehlercode 0x502 wenn der
  475. Speicherplatz nicht ausreicht.
  476.  
  477.  
  478. énderungen fÅr Version 3.0:
  479.  
  480. Dies ist die erste Version mit Deutscher Dokumentation. Falls Sie mit
  481. frÅheren Versionen gearbeitet haben, kînnen Sie die énderungen in der
  482. Englischen Beschreibung nachlesen - denn dann kînnen Sie doch
  483. Englisch, oder? :)
  484.